#ifndef __GRAFICASIM_H__
#define __GRAFICASIM_H__
#include <iostream>
#include <gtk/gtk.h>
#include "Callbacks.h"
#include "Campo.h"
#include "Simulacion.h"

 
class GraficaSim{

	private:
		 GtkWidget * fileSelector;
		 GtkWidget *window; 
	     GdkPixmap *pixmap ;
		 GtkWidget * drawing_area;
    	 GtkWidget *hbox;
	     GtkWidget *vbox;
	     GtkWidget *frameCampo;
         GtkWidget * entradaIP;
         GtkWidget * entradaPuerto;	
	     GtkWidget * status;	
	      GtkWidget* mensajeSalida ;
		 
	     bool hayConexion;
	 	 bool seCargoCampo;
		 bool haySimulacion;	
	     
	    int velocidad; 
	    GTimer * gTimer;
	    gulong tiempo;
	    PangoLayout*  pLayout;
	    bool timerOn;
		int posX;
	    int posY;
		   
	     Simulacion *sim;
		 int campo[20][15];
		 int crecimiento[20][15];
		 int  degradacion [20][15];
					
	   	
    public :
		  
	      GraficaSim( Simulacion *s);
	    ~GraficaSim();
	   
	    void comenzar();
		GtkWidget * creaFrameOpciones ();
	    GtkWidget * creaFrameConfiguracion ();
	    GtkWidget * creaFrameStatus ();
	    void setCallbacks();
	    void dibujarToolTip(GtkWidget *widget, int x, int y);
	    void dibujaCampo(GtkWidget *widget);
	    void dibujarParcelas(GtkWidget *widget);
	    void actualizarEstado();
	    GdkGC* setColor(GtkWidget* widget,int red, int green, int blue);
	    void redibujar(int x, int y);
	    void redibujar(int x, int y ,int ancho,int largo);
	   
	    /*Archivos*/
	    void abrir();
	    void abrirArchivo();
  
	   /*Opciones*/
	   void conectar();
	   void iniciar();	   
	   void reiniciar();
	   void detener() ;
	   void subirVelocidad();
	   void bajarVelocidad();
	   
	   void simulacionEnCurso();
	   void destruirVentana();
	   
	   /*Eventos*/
	   gboolean expose_event (GtkWidget *widget, GdkEventExpose *event);
	   gboolean configure_event (GtkWidget *widget, GdkEventConfigure *event);
       gboolean motion_notify_event (GtkWidget *widget, GdkEventMotion *event);
	
    	void quit();
	      
};

#endif
